package cn.stylefeng.guns.modular.hx.storage.model.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.lang.Nullable;

import java.util.Date;
import java.util.List;

/**
 * @author : like
 * @date : 2024/8/18 9:33
 * @Version: 1.0
 */
@Data
@NoArgsConstructor // 无参
@JsonIgnoreProperties(ignoreUnknown = true)
public class ManageReadDetailDTO {

    /**
     * 状态码
     */
    @JsonProperty("code")
    private Integer code;

    /**
     * 响应数据
     */
    @JsonProperty("data")
    private ManagePageContentDTO data;

    /**
     * 响应消息
     */
    @JsonProperty("msg")
    private String msg;

    @Data
    @NoArgsConstructor
    @JsonIgnoreProperties(ignoreUnknown = true)
    public class ManagePageContentDTO {

        /**
         * 后加=====
         */
        @JsonProperty("item_count")
        private int itemCount;

        /**
         * 调整原因。
         */
        @Nullable
        @JsonProperty("adjust_reason_name")
        private String adjustReasonName;

        /**
         * 审核人。
         */
        @JsonProperty("audit_by")
        private String auditBy;

        /**
         * 审核时间。
         */
        @JsonProperty("audit_time")
        private String auditTime;

        /**
         * 收货客户代码。
         */
        @JsonProperty("client_code")
        private String clientCode;

        /**
         * 收货客户id。
         */
        @JsonProperty("client_id")
        private Long clientId;

        /**
         * 收货客户名称。
         */
        @JsonProperty("client_name")
        private String clientName;

        /**
         * 公司id。
         */
        @JsonProperty("company_id")
        private Long companyId;

        /**
         * 制单人。
         */
        @JsonProperty("create_by")
        private String createBy;

        /**
         * 制单时间。
         */
        @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
        @JsonProperty("create_time")
        private Date createTime;

        /**
         * 配送日。
         */
        @JsonProperty("delivery_date")
        private String deliveryDate;

        /**
         * 明细。
         */
        @JsonProperty("details")
        private List<ManagePageContentDetailDTO> details;

        /**
         * 单据号。
         */
        @JsonProperty("fid")
        private String fid;

        /**
         * 备注。
         */
        @JsonProperty("memo")
        private String memo;

        /**
         * 类型。
         */
        @JsonProperty("order_type")
        private String orderType;

        /**
         * 出库单据类型。
         */
        @JsonProperty("order_type_name")
        private String orderTypeName;

        /**
         * 关联出库申请单单号。
         */
        @JsonProperty("out_application_order_fid")
        private String outApplicationOrderFid;

        /**
         * 打印人。
         */
        @JsonProperty("print_by")
        private String printBy;

        /**
         * 数量。
         */
        @JsonProperty("quantity")
        private Double quantity;

        /**
         * 单据状态。
         */
        @JsonProperty("state")
        private String state;

        /**
         * 状态名称。
         */
        @JsonProperty("state_name")
        private String stateName;

        /**
         * 门店id。
         */
        @JsonProperty("store_id")
        private Long storeId;

        /**
         * 门店名称。
         */
        @JsonProperty("store_name")
        private String storeName;

        /**
         * 发货仓库id。
         */
        @JsonProperty("storehouse_id")
        private Long storehouseId;

        /**
         * 发货仓库名称。
         */
        @JsonProperty("storehouse_name")
        private String storehouseName;

        /**
         * 系统自动生成的备注。
         */
        @JsonProperty("system_memo")
        private String systemMemo;

        /**
         * 最后更新人。
         */
        @JsonProperty("update_by")
        private String updateBy;

        /**
         * 最后更新时间。
         */
        @JsonProperty("update_time")
        private String updateTime;

        /**
         * 上传状态。
         */
        @JsonProperty("upload_state")
        private String uploadState;
    }

}